package model;

public abstract class ExecutionSequence {

	/**
	 * Provides true if the provided {@link System} can execute the transitions in this {@link ExecutionSequence}.
	 * @param system is the {@link System}.
	 * @param marking is the start {@link Marking}.
	 */
	public abstract boolean isRealizable(System system, Marking marking);
	
	/**
	 * Provides the {@link Marking} after the execution of all {@link Transition} in this {@link ExecutionSequence}.
	 * @param system is the {@link System}.
	 * @param marking is the start {@link Marking}
	 * @throws NotActivatedException if at least one set of {@link Transition}s in this {@link ExecutionSequence} is not activated.
	 */
	public abstract Marking getMarkingAfterExecution(final System system, final Marking marking) throws NotActivatedException;
}
